diff options
author | Mike Buland <eichlan@xagasoft.com> | 2012-02-06 13:32:53 -0700 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2012-02-06 13:32:53 -0700 |
commit | 307d91fbd303b3088587ae9c4c1102714654bc53 (patch) | |
tree | 5da1db6f3fab2160a29aef1f0a9cd6242c57fcd7 | |
parent | 9de9d4e733ce872806c569334af4c9ace01db203 (diff) | |
download | stage-307d91fbd303b3088587ae9c4c1102714654bc53.tar.gz stage-307d91fbd303b3088587ae9c4c1102714654bc53.tar.bz2 stage-307d91fbd303b3088587ae9c4c1102714654bc53.tar.xz stage-307d91fbd303b3088587ae9c4c1102714654bc53.zip |
Gats interface supports option input.
-rw-r--r-- | src/interfacegats.cpp | 37 | ||||
-rw-r--r-- | src/situation.h | 4 |
2 files changed, 38 insertions, 3 deletions
diff --git a/src/interfacegats.cpp b/src/interfacegats.cpp index 9f6cf8d..2e33aee 100644 --- a/src/interfacegats.cpp +++ b/src/interfacegats.cpp | |||
@@ -3,6 +3,8 @@ | |||
3 | #include "smlnode.h" | 3 | #include "smlnode.h" |
4 | #include "gamestate.h" | 4 | #include "gamestate.h" |
5 | #include "options.h" | 5 | #include "options.h" |
6 | #include "situation.h" | ||
7 | #include "command.h" | ||
6 | 8 | ||
7 | #include "smlrendererhtml.h" | 9 | #include "smlrendererhtml.h" |
8 | 10 | ||
@@ -11,6 +13,7 @@ | |||
11 | #include <bu/file.h> | 13 | #include <bu/file.h> |
12 | #include <gats/gatsstream.h> | 14 | #include <gats/gatsstream.h> |
13 | #include <gats/types.h> | 15 | #include <gats/types.h> |
16 | #include <stdlib.h> | ||
14 | 17 | ||
15 | using namespace Bu; | 18 | using namespace Bu; |
16 | 19 | ||
@@ -40,7 +43,17 @@ void InterfaceGats::run( class Game *pGame ) | |||
40 | 43 | ||
41 | delete pObj; | 44 | delete pObj; |
42 | 45 | ||
43 | gs.execCommand( Options::getInstance().sCommand ); | 46 | Situation *pSit = gs.getCurSituation(); |
47 | switch( pSit->getInputType() ) | ||
48 | { | ||
49 | case Situation::inputCommand: | ||
50 | gs.execCommand( Options::getInstance().sCommand ); | ||
51 | break; | ||
52 | |||
53 | case Situation::inputOption: | ||
54 | gs.execOption( strtol( Options::getInstance().sCommand.getStr(), NULL, 10 ) ); | ||
55 | break; | ||
56 | } | ||
44 | } | 57 | } |
45 | else | 58 | else |
46 | { | 59 | { |
@@ -60,6 +73,28 @@ void InterfaceGats::run( class Game *pGame ) | |||
60 | pDict = new Gats::Dictionary(); | 73 | pDict = new Gats::Dictionary(); |
61 | pDict->insertBool("running", false ); | 74 | pDict->insertBool("running", false ); |
62 | } | 75 | } |
76 | |||
77 | Situation *pSit = gs.getCurSituation(); | ||
78 | pDict->insert("input", (int)pSit->getInputType() ); | ||
79 | switch( pSit->getInputType() ) | ||
80 | { | ||
81 | case Situation::inputCommand: | ||
82 | break; | ||
83 | |||
84 | case Situation::inputOption: | ||
85 | { | ||
86 | Gats::List *pLst = pDict->insertList("options"); | ||
87 | const CommandSet::CommandList &cl = | ||
88 | pSit->getCommandSet().getCommandList(); | ||
89 | for( CommandSet::CommandList::const_iterator i = cl.begin(); | ||
90 | i; i++ ) | ||
91 | { | ||
92 | pLst->append( (*i)->getRoot() ); | ||
93 | } | ||
94 | } | ||
95 | break; | ||
96 | } | ||
97 | |||
63 | pDict->insert("result", mbResult.getString() ); | 98 | pDict->insert("result", mbResult.getString() ); |
64 | gsIn.writeObject( pDict ); | 99 | gsIn.writeObject( pDict ); |
65 | delete pDict; | 100 | delete pDict; |
diff --git a/src/situation.h b/src/situation.h index 794b308..b859c0f 100644 --- a/src/situation.h +++ b/src/situation.h | |||
@@ -11,8 +11,8 @@ friend class GameBuilder; | |||
11 | public: | 11 | public: |
12 | enum InputType | 12 | enum InputType |
13 | { | 13 | { |
14 | inputCommand, | 14 | inputCommand = 1, |
15 | inputOption, | 15 | inputOption = 2, |
16 | }; | 16 | }; |
17 | 17 | ||
18 | Situation( const Bu::String &sName, InputType tInput ); | 18 | Situation( const Bu::String &sName, InputType tInput ); |